knitr::opts_chunk$set(echo = TRUE)

Preparativos

Cargar los paquetes

#Carga de paquetes
library(dplyr)
library(sf)
library(DT)
library(plotly)
library(leaflet)
library(raster)


Cargar los datos sobre los primates

#  Registros de presencia de primates
primates <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/gbif/primates-cr-registros.csv",
    options = c(
      "X_POSSIBLE_NAMES=decimalLongitude",
      "Y_POSSIBLE_NAMES=decimalLatitude"
    ),
    quiet = TRUE
  )


Asignar el sistema de cordenadas

# Asignacion de CRS
st_crs(primates) = 4326


Cargar la capa geoespacial de los cantones

# Carga de la capa de cantones
cantones <-
  st_read(
    "https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cr_cantones_simp_wgs84.geojson",
    quiet = TRUE
  )


Hacer el cruce con la tabla de cantones, para obtener el nombre del cantón

# Cruce espacial con la tabla de cantones
primates <-
  primates %>%
  st_join(cantones["canton"])


Introduccion

Se utilisa el conjunto de datos sobre 4 especies de primates de Costa Rica.
Ateles geoffroyi, Cebus capucinus, Alouatta palliata, Saimiri oerstedii que se refieren respectivamente al mono araña, mono carablanca, mono congo y mono ardilla.


Tabla de registros de presencia

Tabla con los registro de familia, especie, provincia, cantón y fecha para cada grupo de primates.

# Tabla de registros de presencia
primates %>%
  st_drop_geometry() %>%
  dplyr::select(family, species, stateProvince, canton, locality, eventDate) %>%
  datatable(
    colnames = c(
      "Familia",
      "Especie",
      "Provincia",
      "Canton",
      "Localidad",
      "Fecha"
    ),
    options = list(searchHighlight = TRUE, language = list(url = '//cdn.datatables.net/plug-ins/1.10.11/i18n/Spanish.json')
    )
  )


Gráfico pastel

Muestra la cantidad de registros en un gráfico pastel para cada una de las especies, ademas el porcentaje del total que representa cada una.

Paso 1

Crear una paleta de colores para el gráfico pastel.

# cargar colores
colors <- c('rgb(211,94,96)', 'rgb(128,133,133)', 'rgb(144,103,167)', 'rgb(171,104,87)')

Paso 2

Crear el gráfico pastel.

#grafico pastel 
p <- plot_ly(
  primates,
  labels = ~ species,
  type = "pie",
  textposition = "inside",
  textinfo = "label+percent",
  insidetextorientation = "auto",
  insidetextfont = list(color = "#FFFFFF"),
  marker = list(colors = colors),
  showlegend = FALSE
) %>%
  layout(
    title = "Cantidad de registros para cada especie de primate",
    xaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ),
    yaxis = list(
      showgrid = FALSE,
      zeroline = FALSE,
      showticklabels = FALSE
    ) 
  )
  
config (p, locale = "es")


Mapa de registros de presencia

PASO 1

Separar las especies por capas

# capa de Ateles geoffroyi
Ateles_geoffroyi <-
  primates %>%
  filter(species == "Ateles geoffroyi")

# capa de Cebus capucinus
Cebus_capucinus <-
  primates %>%
  filter(species == "Cebus capucinus")

# capa de Alouatta palliata
Alouatta_palliata <-
  primates %>%
  filter(species == "Alouatta palliata")

# capa de Saimiri oerstedii
Saimiri_oerstedii <-
  primates %>%
  filter(species == "Saimiri oerstedii")


Paso 2

Obtener la capa rasper de altitud utilizando WorldClim.

# Especificación del directorio de trabajo  
setwd("C:/Users/SARA/Desktop/UCR/Procesamiento_de_datos_geograficos/Tareas y Proyectos/Tareas/Tarea03")

# Obtención de la capa de altitud
alt <- getData(
  "worldclim",
  var = "alt",
  res = .5,
  lon = -84,
  lat = 10
)

# Capa de altitud recortada para los límites exactos de Costa Rica
altitud <-
  alt %>%
  crop(cantones) %>%
  mask(cantones)


Paso 3

Crear la paleta de colores para una coloracion adecuada

# Paleta de colores
pal <- colorNumeric(
  c("#006400", "#FFFF00", "chocolate1", "#FF0000"), 
  values(altitud), 
  na.color = "transparent"
)


Paso 4

Crear el mapa de registros de presencia de los primates

# Mapa de registros de presencia
primates %>%
  dplyr::select(stateProvince,
                canton,
                locality,
                eventDate,
                family,
                species) %>%
  leaflet() %>%
  addProviderTiles(providers$OpenStreetMap.Mapnik, group = "OpenStreetMap") %>%
  addProviderTiles(providers$Stamen.TonerLite, group = "Stamen Toner Lite") %>%
  addProviderTiles(providers$Esri.WorldImagery, group = "Imágenes de ESRI") %>%
  addRasterImage(
    altitud, 
    colors = pal, 
    opacity = 0.7,
    group = "Capa raster de altitud"
  ) %>%  
  addPolygons(
    data = cantones,
    color = "tan4",
    fillColor = "transparent",
    stroke = TRUE,
    weight = 1.0,
  ) %>%
  addCircleMarkers(
    data = Ateles_geoffroyi,
    stroke = F,
    radius = 4,
    fillColor = 'gray',
    fillOpacity = 0.8,
    popup = paste(
      Ateles_geoffroyi$stateProvince,
      Ateles_geoffroyi$canton,
      Ateles_geoffroyi$locality,
      Ateles_geoffroyi$eventDate,
      Ateles_geoffroyi$family,
      Ateles_geoffroyi$species,
      sep = '<br/>'
    ),
    group = "Ateles geoffroyi"
  ) %>%
  addCircleMarkers(
    data = Cebus_capucinus,
    stroke = F,
    radius = 4,
    fillColor = 'blue',
    fillOpacity = 0.8,
    popup = paste(
      Cebus_capucinus$stateProvince,
      Cebus_capucinus$canton,
      Cebus_capucinus$locality,
      Cebus_capucinus$eventDate,
      Cebus_capucinus$family,
      Cebus_capucinus$species,
      sep = '<br/>'
    ),
    group = "Cebus capucinus"
  ) %>%
  addCircleMarkers(
    data = Alouatta_palliata,
    stroke = F,
    radius = 4,
    fillColor = "orange",
    fillOpacity = 0.8,
    popup = paste(
      Alouatta_palliata$stateProvince,
      Alouatta_palliata$canton,
      Alouatta_palliata$locality,
      Alouatta_palliata$eventDate,
      Alouatta_palliata$family,
      Alouatta_palliata$species,
      sep = '<br/>'
    ),
    group = "Alouatta palliata"
  ) %>%
  addCircleMarkers(
    data = Saimiri_oerstedii,
    stroke = F,
    radius = 4,
    fillColor = 'red',
    fillOpacity = 0.8,
    popup = paste(
      Saimiri_oerstedii$stateProvince,
      Saimiri_oerstedii$canton,
      Saimiri_oerstedii$locality,
      Saimiri_oerstedii$eventDate,
      Saimiri_oerstedii$family,
      Saimiri_oerstedii$species,
      sep = '<br/>'
    ),
    group = "Saimiri oerstedii"
  ) %>%
  addLayersControl(
    baseGroups = c("OpenStreetMap", "Stamen Toner Lite", "Imágenes de ESRI"),
    overlayGroups = c(
      "Ateles geoffroyi",
      "Cebus capucinus",
      "Alouatta palliata",
      "Saimiri oerstedii",
      "Capa raster de altitud"
    )
  ) %>%
  addMiniMap(
    tiles = providers$Stamen.OpenStreetMap.Mapnik,
    position = "bottomleft",
    toggleDisplay = TRUE
  )